#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;

//1.----友元----
//提供了突破封装的方法,但会增加耦合度,破坏封装

//注意:[1]友元函数不是成员函数
//     [2]友元不能加const修饰
//     [3]友元函数可以在类里任何位置声明,不受访问限定符的限制
//     [4]一个函数可以是多个类的友元函数

//----友元类----
class Time
{
	friend class Date;
	//Date想访问Time的私有,成为了Time的朋友
public:
	Time(int hour = 0, int minute = 0, int second = 0)
		:_hour(hour), _minute(minute), _second(second)
	{}
private:
	int _hour;
	int _minute;
	int _second;
};

class Date
{
public:
	Date(int year = 1, int month = 1, int day = 1)
	:_year(year), _month(month), _day(day)
	{
		_t._hour = 0;
		_t._minute = 0;
		_t._second = 0;
	}
	void SetTimeOfDate(int hour, int minute, int second)
	{
		//Date内部访问Time的私有
        _t._hour = 0;
		_t._minute = 0;
		_t._second = 0;
    }
  
private:
	int _year;
	int _month;
	int _day;
	Time _t;
};